package 可重入锁.用阻塞队列的生产者消费者;

import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;

public class Client {
    /*
        ArrayBlockingQueue有界队列：放三个东西
     */
    public static void main(String[] args) {
//        BlockingQueue<Integer> queue = new ArrayBlockingQueue<>(3);
        BlockingQueue<Integer> queue = new LinkedBlockingQueue<>();

        Consumer c1 = new Consumer(queue);// 共用一个 有界队列
        Produce p = new Produce(queue);// 共用一个 有界队列

        Thread t3 = new Thread(c1, "3消费者");
        Thread t4 = new Thread(c1, "4消费者");

        Thread t1 = new Thread(p, "1生产者");
        Thread t2 = new Thread(p, "2生产者");
        t1.start();
        t3.start();
        t4.start();
        t2.start();
    }
    //3消费者 等待
    //1生产者 放入 7
    //1生产者 放入 6
    //1生产者 放入 3
    //1生产者 放入 0
    //1生产者 等待
    //1生产者 放入 8
    //1生产者 等待
    //1生产者 放入 9
    //3消费者 拿到 7
    //3消费者 拿到 6
    //3消费者 拿到 3
    //3消费者 拿到 0
    //3消费者 等待
    // .............
}
